The present invention relates to a method of manipulating a software application by resolving user input into application commands. In particular, the present invention relates to resolving user input into a command to render information from a data source, such as a database.
In typical computer systems, user input has been limited to a rigid set of user responses having a fixed format. For example, with a command line interface, user input must be of a specific form which uniquely identifies a single command and selected arguments from a limited and specific domain of possible arguments. Similarly, with a graphical user interface, only a limited set of options are presented to the user and it is relatively straight forward for a developer to define a user input domain consisting of a limited set of commands or entities for each specific user input in the limited set of user inputs.
By limiting a user to a rigid set of allowed inputs or responses, computer systems have required a significant level of skill from the user or operator. It has traditionally been the responsibility of the user to mentally translate the desired task to be performed into the specific input recognized by the applications running on the computer system. In order to expand the usability of computer systems, there has been an ongoing effort to provide applications with a natural language (NL) interface. The natural language interface extends the functionality of applications beyond their limited input set and opens the computer system to inputs in a natural language format. The natural language interface is responsible for performing a translation from the relatively vague and highly context based realm of natural language into the precise and rigid set of inputs required by a computer application.
Resolving natural language input to render information from a data source, such as a database, can be difficult to perform due to the customized nature of data sources and the many ways for which to render information from a data source. In particular, rendering tables to analyze information that is stored in a data source is performed with specific instructions from a user defining what information should be rendered and how to render it. Due to this cumbersome interface, many users have difficulty rendering tables for useful data analysis. Providing a user-friendly interface to create and render tables from data source information would provide a more efficient tool for which information can be analyzed.